package com.bereborn.reflecttxt;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.lang.reflect.Field;

public class UtilTool {

    /**
     * 保存任意类型的对象
     * @param obj
     */
    public static void save(Object obj){
        try {
            FileOutputStream fileOutputStream = new FileOutputStream("E:\\workpaces\\workspace-be-reborn\\junit-reflect-annotation-proxy-app\\junit-reflect-annotation-proxy-app\\src\\data.txt");
            PrintStream ps = new PrintStream(fileOutputStream);
            //1、提取这个对象的全部成员变量 只有反射可以解决
            Class<?> c = obj.getClass();  //getSimpleName()：获取当前类名 getName()：获取全限定名  包名+类名
            ps.println("============="+c.getSimpleName()+"=============");
            //2、提取他的全部成员变量
            for (Field field : c.getDeclaredFields()) {
                //获取成员变量信息
                String name = field.getName();
                //提取本成员变量在obj对象中的值（取值）
                field.setAccessible(true);
                String value = field.get(obj)+"";
                ps.println(name+"="+value);
            }

        } catch (Exception e) {
            throw new RuntimeException(e);
        }

    }


}
